package com.train.common.utils.helper;

import com.train.common.model.user.UserInfo;
import com.train.common.utils.jwt.JwtUtils;
import com.train.common.utils.servlet.ServletUtils;
import com.train.common.utils.thread.ThreadLocalUtils;
import io.micrometer.common.util.StringUtils;

import java.util.Map;

public class UserHelper {

    public static Long getUserId() {
        Object o = ThreadLocalUtils.get();
        if (o == null) {
            UserInfo userInfo = getUserInfo();
            if (userInfo == null) {
                return null;
            }
            ThreadLocalUtils.set(userInfo);
            return userInfo.getId();
        }
        UserInfo userInfo = (UserInfo) o;
        return userInfo.getId();
    }

    public static UserInfo getUserInfo() {
        String token = ServletUtils.getHeader("Access-Token");
        if (StringUtils.isBlank(token)) {
            return null;
        }
        String jwt = token.substring(7);
        // 解析token
        Map<String, ?> payloads = JwtUtils.parse(jwt);
        if (payloads.isEmpty()) {
            return null;
        }
        long userId = Long.parseLong(payloads.get("id").toString());
        String mobile = payloads.get("mobile").toString();
        return new UserInfo(userId, mobile);
    }


}